package com.itany.corejava.code08_常用类.string类;

import java.util.Arrays;

/**
 * @author 石小俊
 * 2024年07月19日 16:23
 */
public class Test05_正则表达式 {
    public static void main(String[] args) {
        // 正则表达式校验时通过matches方法进行校验
        // 方法调用者表示的是需要校验的字符串
        // 方法的参数是正则表达式
        System.out.println("指定字符串是否只有一个字符a:" + "a".matches("a"));
        System.out.println("指定字符串是否是三个字符a:" + "aaa".matches("a{3}"));
        System.out.println("指定字符串是否是1~5个字符a:" + "aaaaa".matches("a{1,5}"));
        System.out.println("指定字符串是否至少有2个字符a:" + "aaaaaaaaaaaaaaaaaa".matches("a{2,}"));
        System.out.println("指定字符串是否至少有1个字符a:" + "".matches("a+"));
        System.out.println("指定字符串是否有0~1个字符a:" + "".matches("a?"));
        System.out.println("指定字符串是否有0或多个字符a:" + "".matches("a*"));
        System.out.println("指定字符串是否是至少一个数字:" + "1232131231".matches("[0-9]+"));
        System.out.println("指定字符串是否是至少一个数字:" + "1232131231,".matches("[0,1,2,3]+"));
        System.out.println("指定字符串是否是至少一个数字:" + "1232131231".matches("\\d+"));
        System.out.println("\\D表示非数字:" + "asd#%^a".matches("\\D+"));
        System.out.println("指定字符串是否是至少一个小写英文字母:" + "asdasdD".matches("[a-z]+"));
        System.out.println("指定字符串是否是至少一个英文字母:" + "asdasdD".matches("[a-zA-Z]+"));
        System.out.println("指定字符串是否是至少一个任意字符:" + "_!#@!Rasdas2312341".matches(".+"));
        System.out.println("匹配英文字母数字下划线:" + "_Rasdas2312341".matches("[0-9a-zA-Z_]+"));
        System.out.println("匹配英文字母数字下划线:" + "_Rasdas2312341".matches("\\w+"));
        System.out.println("匹配除了英文字母数字下划线以外的字符:" + "#$%@$%$@#".matches("\\W+"));
        System.out.println("匹配空格:" + "       ".matches("\\s+"));
        System.out.println("匹配非空格:" + "1231asdre23r".matches("\\S+"));
        System.out.println("匹配3或5位数字:" + "123".matches("\\d{3}|\\d{5}"));
        System.out.println("匹配3或5位数字:" + "1234".matches("\\d{3}|\\d{5}"));
        System.out.println("匹配3或5位数字:" + "12345".matches("\\d{3}|\\d{5}"));
        System.out.println("匹配3或5位数字:" + "12345".matches("\\d{3}(\\d{2})?"));

        String s = "Hello12321321World2131521Hello234567890World";
        String s2 = s.replaceAll("\\d+", " ");
        System.out.println(s2);
        s = "Hello12World123Hello1World";
        s2 = s.replaceAll("\\d", " ");
        System.out.println(s2);


        s = "Hello12World123Hello1World";
        s2 = s.replaceFirst("\\d", " ");
        System.out.println(s2);

        String[] arr = s.split("\\d+");
        System.out.println(Arrays.toString(arr));

    }
}
